package com.alibaba.dingtalk.openapi.newmessage.entity;/*/*/

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * 卡片消息
 * 卡片消息支持整体跳转ActionCard样式和独立跳转ActionCard样式：
 * 整体跳转ActionCard样式，支持一个点击Action，需要传入参数 single_title和 single_url；
 * 整体跳转ActionCard样式参数示例：
 * {
 *     "msgtype": "action_card",
 *     "action_card": {
 *         "title": "是透出到会话列表和通知的文案",
 *         "markdown": "支持markdown格式的正文内容",
 *         "single_title": "查看详情",
 *         "single_url": "https://open.dingtalk.com"
 *     }
 * }
 *
 * 独立跳转ActionCard样式，支持多个点击Action，需要传入参数 btn_orientation 和 btn_json_list；
 * 独立跳转ActionCard样式参数示例：
 * {
 *     "msgtype": "action_card",
 *     "action_card": {
 *         "title": "是透出到会话列表和通知的文案",
 *         "markdown": "支持markdown格式的正文内容",
 *         "btn_orientation": "1",
 *         "btn_json_list": [
 *             {
 *                 "title": "一个按钮",
 *                 "action_url": "https://www.taobao.com"
 *             },
 *             {
 *                 "title": "两个按钮",
 *                 "action_url": "https://www.tmall.com"
 *             }
 *         ]
 *     }
 * }
 *
 * @author 魏荣杰
 * @date 2019/3/21 15:47
 * @since v1.0
 * @version v1.0
 */
@Setter
@Getter
@ToString
public class ActionCard extends AbstractMessage {
    private static final long serialVersionUID = 8903189642974101454L;

    /**
     * 透出到会话列表和通知的文案
     */
    private String title;

    /**
     * 消息内容，支持markdown，语法参考标准markdown语法。
     */
    private String markdown;

    /**
     * 	使用整体跳转ActionCard样式时的标题，必须与single_url同时设置
     */
    @JSONField(name = "single_title")
    private String singleTitle;

    /**
     * 消息点击链接地址，当发送消息为E应用时支持E应用跳转链接
     */
    @JSONField(name = "single_url")
    private String singleUrl;

    /**
     * 使用独立跳转ActionCard样式时的按钮排列方式，竖直排列(0)，横向排列(1)；必须与btn_json_list同时设置
     */
    @JSONField(name = "btn_orientation")
    private String btnOrientation;
    /**
     * 使用独立跳转ActionCard样式时的按钮列表；必须与btn_orientation同时设置
     */
    @JSONField(name = "btn_json_list")
    private List<BtnJsonList> btnJsonList;

    @Setter
    @Getter
    @ToString
    public static class BtnJsonList {

        /**
         * 	消息点击链接地址，当发送消息为E应用时支持E应用跳转链接
         */
        @JSONField(name = "action_url")
        private String actionUrl;
        /**
         * 使用独立跳转ActionCard样式时的按钮的标题
         */
        private String title;

        public BtnJsonList() {
        }

        public BtnJsonList(String actionUrl, String title) {
            this.actionUrl = actionUrl;
            this.title = title;
        }
    }

    @Override
    public String type() {
        return "action_card";
    }
}
